home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 5
/
Merciful - Disc 5.iso
/
software
/
p
/
pcqpascalv1.2d.lha
/
Examples2
/
DOSDemos
/
ExAll.p
next >
Wrap
Text File
|
1997-05-06
|
1KB
|
56 lines
Program ExAllDemo;
{ ExAllDemo by Andreas Tetzl }
{ Public Domain }
{$I "Include:Exec/Memory.i"}
{$I "Dos.i"}
CONST BufferSize = 2048;
VAR ed,p,ed2 : ExAllDataPtr;
eac : ExAllControlPtr;
datei : FileLock;
n, res : Integer;
more : Boolean;
PROCEDURE CleanExit(Why : String; RC : Integer);
BEGIN
IF eac<>NIL THEN FreeDosObject(DOS_EXALLCONTROL,eac);
IF ed<>NIL THEN FreeMem(ed,BufferSize);
IF datei<>NIL THEN UnLock(datei);
IF why<>NIL THEN Writeln(Why);
Exit(RC);
END;
BEGIN
Writeln("ExAllDemo\nVerzeichnis Sys:\n");
eac:=AllocDosObject(DOS_EXALLCONTROL,NIL);
IF eac=NIL THEN CleanExit("Fehler bei AllocDosObject",10);
ed:=AllocMem(BufferSize,0);
IF ed=NIL THEN CleanExit("Nicht genug Speicher",10);
eac^.eac_LastKey:=0;
eac^.eac_MatchString:=NIL;
eac^.eac_MatchFunc:=NIL;
datei:=Lock("sys:",SHARED_LOCK);
IF datei=NIL THEN CleanExit("Kein Lock auf Sys:",10);
REPEAT
more:=ExAll(datei,ed,BufferSize,ED_SIZE,eac);
res:=IoErr;
p:=ed;
For n:=1 to eac^.eac_Entries do
BEGIN
Write(p^.ed_Name);
IF p^.ed_Type>=0 THEN Writeln("(dir)":40) else Writeln(p^.ed_Size:40);
p:=p^.ed_Next;
END;
UNTIL (More=FALSE) AND (res=ERROR_NO_MORE_ENTRIES);
CleanExit(NIL,0);
END.